import axios from "axios"


axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
// 创建axios实例
const service = axios.create({
    // axios中请求配置有baseURL选项，表示请求URL公共部分
    baseURL: process.env.VUE_APP_BASE_API,
    // 超时
    timeout: 10000,
});
// request拦截器
service.interceptors.request.use(
    (config) => {
        // 是否需要设置 token
        return config;
    },
    (error) => {
        console.log(error);
        Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    (success) => {
        if (success.status && success.status == 200 && success.data.status == 500) {
            Message.error({ message: success.data.msg })
            return;
        }
        if (success.data.msg) {
            Message.success.data;
        }
        return success.data;
    },
    (error) => {
        if (error.response.status == 504 || error.response.status == 404) {
            Message.error({ message: "服务器是不是被你吃了" });
        } else if (error.response.status = 403) {
            Message.error({ message: "权限不足，请联系管理员" });
        } else if (error.response.status == 401) {
            Message.error({
                message: error.response.data.msg ?
                    error.response.data.msg :
                    "尚未登陆，请登录"
            });
            location.href = "/";
        } else {
            if (error.response.data.msg) {
                Message.error({ message: error.response.data.msg });
            } else {
                Message.error({ message: "未知错误！" });
            }
        }
        return Promise.reject(error);
    }
);

export default service;
// export主要用于对外输出本模块变量的接口，一个文件就可以呗理解为一个模块。 export就是导出。
// import就是在一个模块中加载另一个含有export接口的模块，import就是导入。
// 1. export default和export都能导出一个模块里面的常量，函数，文件，模块等，在其他文件活模块中通过import来导入常量，函数，文件或模块。这样就可以使用他们了。
// 但是，在一个文件或模块中，export,import可以有多个，export default却只能有一个。

//2.通过export方式导出，再导入的时候需要加{}大括号，export default就不需要{}。